package com.loong.ems.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.loong.ems.domain.entity.EmpPostLevel;
import com.loong.ems.domain.entity.Employee;
import com.loong.ems.mapper.EmpPostLevelMapper;
import com.loong.ems.service.EmpPostLevelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 龙勇-229970722
 * @date 2025-01-02 10:23
 * @description:
 */

@Service
public class EmpPostLevelServiceImpl implements EmpPostLevelService {
    @Autowired
    private EmpPostLevelMapper empPostLevelMapper;

    /**
     * 分页查询岗位岗级信息
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return
     */
    @Override
    public PageInfo<EmpPostLevel> listByPage(int pageNum, int pageSize) {
        // 使用 PageHelper 分页
        PageHelper.startPage(pageNum, pageSize);
        List<EmpPostLevel> empPostLevels = empPostLevelMapper.selectAll();
        return new PageInfo<>(empPostLevels);
    }

    /**
     * 查询所有岗位岗级信息
     * @return
     */
    @Override
    public List<EmpPostLevel> list() {
        return empPostLevelMapper.selectAll();
    }

    /**
     * 新增岗位岗级信息
     * @param empPostLevel 岗位级别信息
     */
    @Override
    public void add(EmpPostLevel empPostLevel) {
        empPostLevelMapper.insert(empPostLevel);
    }

    /**
     * 修改岗位岗级信息
     * @param empPostLevel 岗位级别信息
     */
    @Override
    public void update(EmpPostLevel empPostLevel) {
        empPostLevelMapper.updateById(empPostLevel);
    }

    /**
     * 删除岗位岗级信息
     * @param id
     */
    @Override
    public void deleteById(Long id) {
        empPostLevelMapper.deleteById(id);
    }

    /**
     * 查询所有禁用状态的岗位岗级信息
     * @return
     */
    @Override
    public List<EmpPostLevel> listDelete() {
        return empPostLevelMapper.selectAllAndDeleted();
    }

    /**
     * 恢复岗位岗级信息
     * 由于没有禁用功能，此方法无用
     * @param id
     */
    @Override
    public void recover(Long id) {
        empPostLevelMapper.recover(id);
    }

    /**
     * 获取所有岗位岗级信息包括已经禁用的
     * @return
     */
    @Override
    public List<EmpPostLevel> getAll() {
        return empPostLevelMapper.getAll();
    }

    /**
     * 分页模糊查询岗位岗级信息
     * @param name
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public List<EmpPostLevel> search(String name, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<EmpPostLevel> empPostLevels = empPostLevelMapper.search(name);
        return empPostLevels;
    }
}
